LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
EJERCICIO ADICIONAL 1ER EXAMEN
1. #include <16f877a.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#use fast_IO(B)
#use fast_IO(D)
#use fast_IO(A) // Declaraciones generales
#INT_RTCC // Directiva de inclusión de interrupción por desborde del TMR0
void RTCC_isr(){ // Función o subrutina que se ejecutará por desborde del TMR0
output_toggle(PIN_B7);
set_timer0(198);}
#INT_TIMER1 // Directiva de inclusión de interrupción por desborde del TMR1
void TIMER1_isr(){ // Función o subrutina que se ejecutará por desborde del TMR1
output_toggle(PIN_B1);
set_timer1(0xFC1C);}
#INT_EXT // Directiva de inclusión de interrupción por cambio de nivel en RB0
void ext_interm(){ // Función o subrutina que se ejecutará por cambio de nivel en RB0
while (TRUE){
if (input(PIN_A0)==0)
{break;}//return;}//goto A;}
delay_ms(250);
output_toggle(PIN_D0);
output_toggle(PIN_D1);
}
}
void main(){ // Programa principal
set_tris_b(0x01);
set_tris_d(0);
set_tris_a(0x01);
output_d(0);
port_b_pullups(true);
output_low(PIN_B7);
output_low(PIN_B1);
setup_timer_0(RTCC_DIV_8);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_2);
ext_int_edge(H_to_L);
set_timer0(198);
set_timer1(64540);
enable_interrupts(INT_RTCC);
enable_interrupts(INT_TIMER1);
enable_interrupts(int_ext);
enable_interrupts(global);
while(TRUE){
output_high(PIN_D0);
output_high(PIN_D1);}
}
2. Imagen de la simulación sin presionar RB0:
Led’s no alternan su estado y se
producen las interrupciones por
desborde del TMR0 y TMR1.
Imagen de la simulación al presionar RB0:
Led’s alternan su estado cada
250 ms y no se producen las
interrupciones por desborde del
TMR0 y TMR1, al encontrarse
deshabilitadas por atender la
interrupción de RB0/INT.